剛剛發現忘記了 batch 對模型的影響,又回去看了影片一次...人老惹真的容易忘。
batch normailization 可以作為改變 Landscape 的方法之一。之前提到,error surface 像是一個碗公型的情況,有兩個參數,其中一個參數 w_2 比較陡,一個參數 w_1 比較平緩,固定 learning rate 就會很難訓練。此外,參數 w_2 比較陡,在 input 比較小的時候,變化也不會大,參數 w_1 比較平緩,但 input 比較大,也會產生比較大的 Loss。所以要 normalized 參數。這邊稱為 feature normalization。
在 activation function 之前或之後做 normalization 的差別不大。但對於 sigmoid function 可以在之前做 normalization。因為 sigmoid 在 0 的附近才有變化,所以可以在之前做 normalization。
針對一個 batch 算一次 normalization 就叫 batch normalization。另外當 0 出現時,有可能限制,所以再增加一些參數來讓網路學出比較好的數值。
之前所提到的是在訓練階段的 batch normalization,在測試階段,則是使用 訓練階段所得到的移動平均數值。